<?php
class UsersController extends AppController {

	var $name = 'Users';	
	var $uses = array('User', 'UsersEquiposOperativo');	
	var $helpers = array('Access');

	function index() {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		$this->User->recursive = 0;
		$this->set('users', $this->paginate());
	}
	
     function getlist($eo = null, $group_id = null) {			
		if (!$eo && !$group_id) {
			//Ninguno de los dos;
			return $this->User->find('all', array('order'=>'User.group_id ASC'));
		}else{
			//Usuarios con el mismo EO			
			//Si es coordinador
			$grupos = array();
			if($group_id=="5")
				$grupos = array(3,4);		
			else//Es Asesor
				$grupos = array(2);
						
			$usuarios = $this->UsersEquiposOperativo->find('all',array('fields'=>array('UsersEquiposOperativo.user_id'), 
															  'conditions'=>array('UsersEquiposOperativo.equipos_operativo_id'=>$eo, 
															  'AND'=>array('UsersEquiposOperativo.group_id'=>$grupos))));
			return $usuarios; 
		}
	}

	function view($id = null) {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		if (!$id) {
			$this->Session->setFlash(__('Usuario Invalido', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('user', $this->User->read(null, $id));
		$user_nombre = $this->User->getNombreCompleto($id);
		$this->set('nombre_completo',$user_nombre);
	}

	function add() {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		if (!empty($this->data)) {
			$this->User->create();
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('El usuario ha sido guardado', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('El usuario no ha sido guardado. Intente de nuevo.', true));
			}
		}
		$groups = $this->User->Group->find('list',array('fields'=>array('Group.id','Group.nombre')));
		$this->set(compact('groups'));
	}

	function edit($id = null) {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Usuario Invalido', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Perfil Actualizado', true));
				$this->redirect(array('controller'=>'pages','action' => 'entrada'));
			} else {
				$this->Session->setFlash(__('El perfil no pudo ser actualizado. Intente de nuevo.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}
		$user = $this->data;
		$groups = $this->User->Group->find('list', array('fields'=>array('Group.id','Group.nombre')));
		$this->set(compact('groups', 'user'));
	}

	function delete($id = null) {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for user', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->User->delete($id)) {
			$this->Session->setFlash(__('User deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('User was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
	
	
	function contrasena($id = null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Usuario Invalido', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			$user=$this->User->read(null, $id);
			$actual = $user['User']['password'];
			$nueva = $this->data['User']['passwords'];
			
			if($actual != $nueva){
				$this->data['User']['password']=$this->Auth->password($nueva);
			}						
			if($this->User->save($this->data)){				
				$this->Session->setFlash(__('Contrase&ntilde;a Cambiada', true));
				$this->redirect(array('controller'=>'reportes_talleres','action' => 'index'));
			}else{
				$this->Session->setFlash(__('La contrase&ntilde;a no fue guardada. Intente de nuevo.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}

		$user = $this->data;

		$this->set(compact('user'));
	}
	
	function login() {		
		if ($this->Session->read('Auth.User')) {
			$this->Session->setFlash('Bienvenido!');
			$this->redirect(array('controller'=>'users','action' => 'bienvenido'));
		}		
	}
	 
	function logout() {
	    $this->Session->setFlash('Ha cerrado sesion correctamente!');
		$this->redirect($this->Auth->logout());		
	}
	
	
	function bienvenido(){
		$this->set('usuario',$this->User->read(null, $this->Access->getMy('id')));
	}
	
	
	
	function beforeFilter() {
	    parent::beforeFilter(); 
	    //$this->Auth->allowedActions = array('login', 'logout');
	}
}
?>